home *** CD-ROM | disk | FTP | other *** search
/ Wonky Flux Batch 2019 02 / Wonky_Flux_Batch_2019-02.zip / Wonky Flux Batch 2019-02 / 089 - Misc Stuff - PD.dsk / MSGOUT.S < prev    next >
Text File  |  2019-02-17  |  3KB  |  112 lines

  1.           AST 32
  2. *                              *
  3. *         PRINTSTRING          *
  4. *                              *
  5. *     BY  ANDY HERTZFELD       *
  6. *                              *
  7. * PRINTSTRING is always init-  *
  8. * ialized with a JSR to MSGOUT *
  9. * then followed (usually) with *
  10. * HEX 8D (for a carriage rtn), *
  11. * then the ASCII message.  The *
  12. * ASCII must be terminated     *
  13. * with a HEX 00.               *
  14. *                              *
  15.           AST 32
  16. *
  17. *
  18. *
  19. TEMP      EQU 0
  20. COUT      EQU $FDED
  21. *
  22. *
  23. *
  24. * Andy Hertzfeld's famous and handy l'il
  25. *  string printing routine.
  26. *
  27. *
  28. MSGOUT    PLA            ;PULL LO BYTE OF RTS OFF STACK
  29.           STA TEMP       ;SAVE IT
  30.           PLA            ;PULL HI BYTE
  31.           STA TEMP+1     ;AND SAVE IT TOO
  32.           LDY #0         ;TO INDEX STRING
  33. LOOP      INC TEMP       ;ADVANCE RTS ADR FOR EACH CHR
  34.           BNE SKIPADD    ;IF IT'S ZERO THEN WE GOTTA
  35.           INC TEMP+1     ;INCREMENT THE HI BYTE
  36. SKIPADD   LDA (TEMP),Y   ;GET A CHR FROM ASCII STRING
  37.           BEQ MSGRTS     ;IF CHR=0, END OF STRING
  38.           ORA #$80       ;IF STD ASCII CONV TO NEG FOR COUT
  39.           JSR COUT       ;OUTPUT THE CHR
  40.           JMP LOOP       ;GET A NEW CHR
  41. MSGRTS    LDA TEMP+1     ;GET HI BYTE OF RTS
  42.           PHA            ;PUSH IT BACK ON STACK
  43.           LDA TEMP       ;FETCH NEW LO BYTE OF RTS
  44.           PHA            ;AND PUT IT ON THE STACK
  45.           RTS            ;NOW WE KNOW WHERE WE'RE GOING
  46. *
  47. *
  48.           AST 32
  49. *                              *
  50. * If this subroutine is to be  *
  51. * used with FLS or INV, then   *
  52. * all normal ASCII must have   *
  53. * the high bit set, i.e., with *
  54. * the " as a delimiter, not '. *
  55. *                              *
  56. * In addition, delete the line *
  57. * "ORA #$80".                  *
  58. *                              *
  59.           AST 32
  60.  
  61.  
  62.           AST 32
  63. *                              *
  64. * CHRIN: Keyboard read routine *
  65. *                              *
  66. * Gets a single character from *
  67. * keyboard input and returns   *
  68. * it in the accumulator.       *
  69. *                              *
  70.           AST 32
  71. *
  72. *
  73. KEYBRD    EQU $C000
  74. STROBE    EQU $C010
  75. *
  76. CHRIN     BIT STROBE     ;RESET KEYBOARD STROBE
  77. KEY       BIT KEYBRD     ;CHECK FOR KEYPRESS
  78.           BPL KEY        ;NO, NOT YET
  79.           LDA KEYBRD     ;YES, SAVE IN ACC
  80.           BIT STROBE     ;CLEAR IT
  81.           JSR COUT       ;PRINT IT
  82.           RTS            ;DONE
  83.  
  84.  
  85.           AST 32
  86. *                              *
  87. * MSGIN: This routine gets a   *
  88. * string of ASCII characters   *
  89. * representing the user's hex  *
  90. * input, converts each two     *
  91. * characters to a single byte, *
  92. * which is returned in A2L.    *
  93. *                              *
  94.           AST 32
  95. *
  96. *
  97. A2L       EQU $3E
  98. PROMPT    EQU $33
  99. GETLN     EQU $FD6A
  100. CROUT     EQU $FD8E
  101. GETNUM    EQU $FFA7
  102. ZMODE     EQU $FFC7
  103. *
  104. MSGIN     LDA #" "       ;BLANK OUT PROMPT
  105.           STA PROMPT
  106.           JSR GETLN      ;MONITOR INPUT ROUTINE
  107.           JSR ZMODE      ;INITIALIZE FOR HEX INPUT
  108.           JSR GETNUM     ;CLEAR A2, THEN GET CHR FM KBD BUF
  109.           JSR CROUT      ;PRINT A C/R
  110.           LDA A2L        ;GET CONVERTED DATA
  111.           RTS            ;DONE
  112.